# Preferred Frame Writing [🏠 Home](/) - [About](/about.md.html) - [Submissions](/submissions.md.html) - [Policies](/policies.md.html) - [Journals](/journals.md.html) ---

Introducing 'git snooze', a timed 'git stash'

A timed git-stash that resets automatically

An M. Rodriguez

2026-01-25

One-Sentence Summary: git snooze lets you defer local Git changes for a fixed time, and forces them to come back so they can’t be forgotten.

Summary: git snooze is a small Git tool that temporarily hides local changes for a fixed number of days. Unlike git stash, snoozed changes automatically reappear after their deadline and warn you, making forgotten work impossible.

Keywords: git, productivity, developer-tools, cli, workflow, vibe-coding

**One-Sentence Summary.** git snooze lets you defer local Git changes for a fixed time, and forces them to come back so they can’t be forgotten. **Abstract.** git snooze is a small Git tool that temporarily hides local changes for a fixed number of days. Unlike git stash, snoozed changes automatically reappear after their deadline and warn you, making forgotten work impossible. **Keywords.** git, productivity, developer-tools, cli, workflow, vibe-coding \begingroup \setcounter{tocdepth}{1} \renewcommand{\contentsname}{\centering Table of Contents} \renewcommand{\numberline}[1]{#1.\hspace{0.6em}} \setlength{\parskip}{0.35em} \vspace{1.0\baselineskip} \begin{center}\rule{0.35\linewidth}{0.4pt}\end{center} \vspace{1.1\baselineskip} \tableofcontents \endgroup ```{=html}

Table of Contents
``` ```{=latex} \vspace{1.0\baselineskip} \begin{center}\rule{0.35\linewidth}{0.4pt}\end{center} \vspace{1.0\baselineskip} ``` ```{=html}
``` ![git snooze: git stash with a timer.](https://siran.github.io/assets/writing/git-snooze.png) ## Like git-stash with a timer `git stash` is useful. It’s also a graveyard. People stash things “for later”… and later never comes. Changes disappear. Context is lost. Work is forgotten. That’s not a Git problem. That’s a **human workflow** problem. ## The idea **What if stashed work had a timer?** * Hide changes for *N* days * Automatically bring them back * Warn you when they reappear * Never rely on memory That’s `git snooze`. ## What is git snooze? `git snooze` is a small Git-side tool for **time-based deferral of local changes**. Think of it as: > **A timed alternative to `git stash` that resets automatically.** ### Core properties * ⏱ Time-based (default: 4 days) * 👀 Always visible (`git snooze -l`) * ⚠ Automatically reappears * 🧠 Impossible to forget * 🏠 Local-only (no history, no remotes) ## How it works (briefly) * **Tracked files** $\to$ hidden using `git update-index --skip-worktree` * **Untracked files** $\to$ renamed to `*.Nd.snoozed.*` and ignored via `.gitignore` * **State** $\to$ stored locally in `.git/snooze.db` * **Automation** $\to$ a `pre-commit` hook runs `git snooze sweep` $\to$ expired snoozes are automatically undone $\to$ a warning is printed to stdout No commits. No branches. No magic. ## Installation (30 seconds) ### Download link (raw script) 👉 **Download:** **`https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py`** ### One-line install (recommended) ```sh curl -fsSL "https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py" -o /tmp/git-snooze \ && python3 /tmp/git-snooze install --global \ && rm -f /tmp/git-snooze ``` That’s it. * Installs `git-snooze` to `~/.local/bin` * Sets **one alias only**: ``` git snooze → git-snooze ``` ## Basic usage ### Snooze a file (default: 4 days) ```sh git snooze notes.md ``` ### Snooze for a specific duration ```sh git snooze notes.md 7 ``` ### Snooze *everything* (stash-like, but timed) ```sh git snooze all git snooze all 14 ``` ## Unsnoozing ### Unsnooze one file ```sh git snooze -u notes.md ``` ### Unsnooze everything immediately ```sh git snooze -u all ``` Unsnoozing is **idempotent** and **index-authoritative**. Even if metadata is missing, the index is always restored. ## Seeing what’s snoozed ```sh git snooze -l ``` Output is grouped by **days remaining**, so you can see what’s about to reappear. ## Automatic reminders (the important part) On every commit: * `git snooze sweep` runs automatically * Expired snoozes are undone * A warning is printed if anything wakes up You **cannot accidentally forget** snoozed work. ## Extra safety * The tool **refuses to snooze itself** unless forced * `git snooze all` never breaks your setup * `git snooze doctor --repair` can rebuild metadata if needed * `git snooze uninstall` cleans up cleanly (and asks before deleting state) ## Why this exists I kept losing work in `git stash`. Not because Git is bad — but because **humans forget**. `git snooze` doesn’t trust memory. It trusts **time**. That’s the whole idea. ## Source & license * Provided as-is, use at your own risk. * Single-file script (Python 3.6+) * Readable, hackable, local-only * MIT-style, do what you want 👉 **Source / download:** **[https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py](https://gist.githubusercontent.com/siran/3640fd147e26c88ea9db0dbe01c15d6c/raw/git-snooze.py)** --- ✅ 100% vibe-code "certified"! 💯 ![git snooze -h](https://siran.github.io/assets/writing/image.png)
--- - [Preferred Frame Writing on GitHub.com](https://github.com/siran/writing) (built: 2026-02-21 11:30 EST UTC-5)